from typing import Optional
from pydantic import BaseModel, Field


class SentenceSplitterConfig(BaseModel):
    """
    用于配置 LlamaIndex SentenceSplitter 的动态参数模型。
    这是一个“卓越”版本，暴露了更多关键参数以实现精细控制。
    """
    chunk_size: int = Field(1024, description="每个文本块的目标大小 (以字符或 token 计，取决于具体实现)")
    chunk_overlap: int = Field(200, description="相邻文本块之间的重叠大小，以确保上下文连续性")
    paragraph_separator: str = Field("\n\n\n", description="用于在文本中识别段落的字符串")
    secondary_chunking_regex: str = Field("[^,.;。？！]+[,.;。？！]?", description="用于在块内部进行二级切分的正则表达式")
    include_prev_next_rel: bool = Field(
        True,
        description="是否在节点之间自动建立 'previous' 和 'next' 的关系链接，对于上下文感知检索至关重要。"
    )

    class Config:
        frozen = True  # 将其设为不可变类型，以便它可以被用作字典的键（用于缓存） 